#include <iostream>
#include "sock.hpp"
#include "util.hpp"
#include "reactor.hpp"
#include "interface.hpp"

void Uarge(char* arr)
{
  std::cout<<arr<<" port"<<std::endl;
}
int main(int argc,char* argv[])
{
  if(argc!=2)
  {
    Uarge(argv[0]);
  }

  int port=atoi(argv[1]);
  int listen_sock=my_sock::Sock::Socket();
  my_util::SetNonBlock(listen_sock);
  my_sock::Sock::Bind(listen_sock,port);
  my_sock::Sock::Listen(listen_sock,5);

  my_epoll::reactor r;
  r.Isitreactor();

  my_epoll:: EventItem item;
  item.sock=listen_sock;
  item.R=&r;
  item.ManagerCallBack(my_interface::accepter,nullptr,nullptr);
  r.AddEvent(listen_sock,EPOLLIN|EPOLLET,item);

  int i=0;
  while(true)
  {
    r.Dispatcher(2000);
    std::cout<<i++<<std::endl;
  }
  return 0;
}
